#pragma once

#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
typedef int QDataType;

typedef struct QueueNode
{
	QDataType data;
	struct QueueNode* next;
}QNode;

typedef struct Queue
{
	QNode* _head;
	QNode* _tail;
	size_t _sz;
}Queue;

void QueueInit(Queue* pq);

void QueueDestroy(Queue* pq);

void QueuePush(Queue* pq, QDataType x);

void QueuePop(Queue* pq);

QDataType QueueFront(Queue* pq);

QDataType QueueBack(Queue* pq);

size_t QueueSize(Queue* pq);

bool QueueEmpty(Queue* pq);